<template>
  <div class="component">组件代码</div>
</template>

<script lang="ts">
// @ts-ignore
import { name, label, style } from '@build/package.json'
// @ts-ignore
import { VueExtend } from 'gods-x'
import Props from './script/props'

export default {
  mixins: [VueExtend.mixin],
  name: name, // 从package.json读取
  label: label, // 从package.json读取
  style: style, // 从package.json读取
  stack: null, // 是否是堆叠模式[false：孩子元素会按楼层一个个向下排布；true：孩子元素绝对定位，随意放置位置]
  childLimit: 9999,  // 孩子元素最大限制数
  leaf: false, // 是否是叶子节点，为true的时候该节点下面不能添加节点
  props: Props,
  components: {},
  // 组件数据
  data () {
    return {
      // 应用名称
      APP_NAME: '',
      // 是否在编辑器环境
      IS_EDITOR: false,
    }
  },
  // 数据监听
  watch: {},
  // 计算属性
  computed: {},
  // 组件创建
  async created() {
    // 处理props的方法this指向问题
    for (let key in this.$props) {
      if (this.$props[key].type == 'Function') {
        this.$props[key].default = this.$props[key].default.bind(this)
      }
    }
    // 判断是否为编辑模式
    // @ts-ignore
    if (window.EDIT_TYPE && /edit[oe]r/i.test(window.EDIT_TYPE)) {
      this.IS_EDITOR = true
    }
  },
  // 组件挂载
  mounted() {
    // 组件加载完成后处理
    // @ts-ignore
    window.EMA.bind('global:node-mounted', async () => {
      // 加载完成事件
      if (this.COM_READY_FUNC_LIST && this.COM_READY_FUNC_LIST.length) {
        // @ts-ignore
        this.onCallExecute(this.COM_READY_FUNC_LIST)
      }
    })
  },
  // 组件方法
  methods: {},
  // 编辑器方法
  editorMethods: {},
}
</script>

<style scoped lang="scss">
.component {}
</style>
